abstract class $LBLD_DIGRAPH{NTP,NLB,ELB} < $DIGRAPH{NTP}
****
A digraph with node (NLB) and edge (ELB) labels


Ancestors
$DIGRAPH{_} $RO_DIGRAPH{_} $GRAPH{_,_} $STR
$ELT{_} $ELT

Descendants
LBLD_DIGRAPH{_,_,_} WTD_DIGRAPH{_,_}



Public


Features
add_node_labelled(w: NLB): NTP;
**** It is still possible to use the digraph "add_node" function to not specify a node label
are_all_edges_labelled: BOOL;
**** Returns true if all edges have labels
are_all_nodes_labelled: BOOL;
**** Returns true if all the nodes have labels
connect(src,dest:NTP,w: ELB);
**** It is still possible to connect nodes without specifying a label
edge_label(e: DIEDGE{NTP}): ELB;
has_edge_label(e:DIEDGE{NTP}): BOOL;
**** Return true if the edge "e" has a label
has_node_label(n: NTP): BOOL;
**** Return true if the node "n" has a label
incoming!(once n: NTP, out a_node_label: NLB, out a_edge_label: ELB): NTP;
**** Similar to the outgoing iter, but yield all incoming nodes into "n"
node_label(n: NTP): NLB;
outgoing!(once n: NTP, out a_node_label: NLB, out a_edge_label: ELB): NTP;
**** Yield the outgoing nodes for "n" and also provide the node and edge labels at the same time. It might be much more efficient to yield these together, in order, than to have to look up the node and edge labels separately.
set_edge_label(e: DIEDGE{NTP},w: ELB);
set_node_label(n: NTP, w: NLB);

The Sather Home Page